/*******************************************************************************
** Opciones.h: muestra la ventana con los diferentes tab para indicar las
**               diferentes opciones.
**
** author: M-S Hernández-García
**
**  This file is part of TEIDE2.
**
**  TEIDE2 is free software: you can redistribute it and/or modify
**  it under the terms of the GNU General Public License as published by
**  the Free Software Foundation, either version 3 of the License, or
**  (at your option) any later version.
**
**  Foobar is distributed in the hope that it will be useful,
**  but WITHOUT ANY WARRANTY; without even the implied warranty of
**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
**  GNU General Public License for more details.
**
**  You should have received a copy of the GNU General Public License
**  along with Foobar.  If not, see <http://www.gnu.org/licenses/>.
**
*******************************************************************************/

#ifndef OPCIONES_H
#define OPCIONES_H

#include <QtCore/QVariant>
#include <QAction>
#include <QApplication>
#include <QButtonGroup>
#include <QCheckBox>
#include <QFrame>
#include <QGroupBox>
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
#include <QRadioButton>
#include <QSpinBox>
#include <QTabWidget>
#include <QWidget>
#include "MostrarMapping.h"


class TFrmOpciones : public QWidget
{
    Q_OBJECT

private:	// User declarations
    bool MissingValidos[4];
    int num_valores_missing;
    QStringList *cadenas_missing;    

public:

    QTabWidget *PgcOpciones;
    QWidget *TshMissing;
    QCheckBox *ChbMiss1Valido;
    QCheckBox *ChbMiss2Valido;
    QCheckBox *ChbMiss3Valido;
    QCheckBox *ChbMiss4Valido;
    QWidget *TshDistancia;
    QLabel *LabInfoDistancias;
    QLabel *LabPesoAlfa;
    QLabel *LabPesoBeta1;
    QLabel *LabMaxDistDonante;
    QLabel *LabPesoGamma;
    QLabel *LabPesoBeta2;
    QLineEdit *PanDivision1;
    QLabel *LabInfoDistancias2;
    QRadioButton *RbMetodo1;
    QRadioButton *RbMetodo2;
    QLineEdit *PanDivision2;
    QSpinBox *EdtPesoAlfa;
    QSpinBox *EdtPesoBeta1;
    QSpinBox *EdtPesoBeta2;
    QSpinBox *EdtPesoGamma;
    QPushButton *ButMinAlfa;
    QPushButton *ButMaxAlfa;
    QPushButton *ButMinBeta1;
    QPushButton *ButMaxBeta1;
    QPushButton *ButMinBeta2;
    QPushButton *ButMinGamma;
    QPushButton *ButMaxBeta2;
    QPushButton *ButMaxGamma;
    QLineEdit *EdtMaxDistDonante;
    QWidget *TshPesosVariables;
    QGroupBox *GbMetodoPesos;
    QRadioButton *RbMetodoPesosImpApar;
    QRadioButton *RbMetodoPesosAleatorio;
    QWidget *TshVarios;
    QCheckBox *ChbIgnorarEdits;
    QCheckBox *ChbIgnorarVariablesNoImputables;
    QWidget *TshInforme;
    QGroupBox *GbMetodoInforme;
    QRadioButton *RbMetodoInformeResumido;
    QRadioButton *RbMetodoInformeExtenso;
    QWidget *TshImputacion;
    QLabel *LabNumMaxRegDonantes;
    QLineEdit *EdtNumMaxRegDonantes;
    QLabel *LabUmbralEnumVariables;
    QLineEdit *EdtUmbralEnumVariables;
    //QWidget *TshCalculoDistancia;


    TFrmOpciones(QWidget* parent, const char* name, Qt::WindowFlags fl, int num_val_missing, QStringList *cad_missing);
    
    void InicValores();

    double GetPesoAlfa();

    double GetPesoBeta1();

    double GetPesoBeta2();

    double GetPesoGamma();

    bool *GetMissingValidos();

    bool GetMissingValido(unsigned i);

    TTipoMetodoPesosVariables GetMetodoPesosVariables();

    bool GetIgnorarEdits();

    bool GetIgnorarVariablesNoImputables();

    bool GetMetodoInformeResumido();

    double GetMaxDistDonante();

    int GetNumMaxRegDonantes();
    
    int GetUmbralEnumVariables();

    bool GetMetodo1();   // metodo sobre el calculo de las distancias
    
public slots:

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// PULSAR EL BOTÓN DE MIN EN EL PESO ALFA.
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
   void ButMinAlfaClick();
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// PULSAR EL BOTÓN DE MAX EN EL PESO ALFA.
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
   void ButMaxAlfaClick();
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// PULSAR EL BOTÓN DE MIN EN EL PESO BETA.
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
   void ButMinBeta1Click();
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// PULSAR EL BOTÓN DE MAX EN EL PESO BETA.
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
   void ButMaxBeta1Click();
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// PULSAR EL BOTÓN DE MIN EN EL PESO BETA.
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    void ButMinBeta2Click();
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// PULSAR EL BOTÓN DE MAX EN EL PESO BETA.
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    void ButMaxBeta2Click();
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// PULSAR EL BOTÓN DE MIN EN EL PESO GAMMA.
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    void ButMinGammaClick();
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// PULSAR EL BOTÓN DE MAX EN EL PESO GAMMA.
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    void ButMaxGammaClick();
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// PULSAR SOBRE EL CHECKBOX DE VALIDEZ DEL NO_PROCEDE.
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    void ChbMiss1ValidoClick();
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// PULSAR SOBRE EL CHECKBOX DE VALIDEZ DEL NO_SABE.
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    void ChbMiss2ValidoClick();
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// PULSAR SOBRE EL CHECKBOX DE VALIDEZ DEL NO_CONTESTA.
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    void ChbMiss3ValidoClick();
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// PULSAR SOBRE EL CHECKBOX DE VALIDEZ DEL NS_NC.
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
   void ChbMiss4ValidoClick();
};

extern TFrmOpciones *FrmOpciones;

#endif // OPCIONES_H       
